package cate.game.play.skill.passive.exp;

import cate.common.table.d.GDHero;
import cate.game.play.config.PlayCfgArgs;
import cate.game.play.fighter.Fighter;
import cate.game.play.proce.action.ctx.ActionCtx;
import cate.game.play.skill.passive.PassiveHandler;

import java.util.List;

/**
 * 第4、8、12回合无法进行普通攻击，但回合开始前自身恢复8%最大生命值，并为全队恢复攻击力50%的生命值，坦克佩戴效果翻倍
 */
public class 通真达灵PH extends PassiveHandler {

	private List<Integer> 回合;

	private int 缴械buff;

	private double 自身恢复;

	private double 全队恢复;

	private byte 翻倍职业;

	//回合=4#8#12&缴械buff=？？&自身恢复=？？&全队恢复=？？&翻倍职业=？？
	@Override
	public void parse(String code) {
		PlayCfgArgs args = new PlayCfgArgs(code);
		回合 = args.getIntList("回合");
		缴械buff = args.getInt("缴械buff");
		自身恢复 = args.getWDouble("自身恢复", 0d);
		全队恢复 = args.getWDouble("全队恢复", 0d);
		翻倍职业 = args.getByte("翻倍职业", GDHero.Job.J3);
	}

	@Override
	public void onFirstEnter(ActionCtx action) {
		if (skill.owner.getJob() == 翻倍职业) {
			自身恢复 *= 2;
			全队恢复 *= 2;
		}
	}

	@Override
	public void onRoundBegin(ActionCtx action) {
		if (!回合.contains(action.getRound().index)) {
			return;
		}
		skill.owner.buff.tryAddByTid(action, 缴械buff);
		if (skill.owner.isDead()) {
			return;
		}
		skill.owner.attr.passiveHeal(action, skill.owner.attr.total().hpTotal() * 自身恢复);
		double v = skill.owner.attr.attTotal() * 全队恢复;
		for (Fighter friend : skill.owner.fightTeam.getFriends(skill.owner)) {
			friend.attr.passiveHeal(action, skill.owner, v);
		}
	}
}
